package org.sysdance.aplicativo.dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import org.sysdance.aplicativo.entidade.Usuario;
import org.sysdance.aplicativo.enums.PermissaoUsuarioEnum;
import org.sysdance.aplicativo.excecao.ConexaoException;
import org.sysdance.aplicativo.excecao.DAOException;
import org.sysdance.aplicativo.integracao.LoginIntegracao;
import org.sysdance.aplicativo.util.ConexaoUtil;
import org.sysdance.aplicativo.util.SysDanceUtil;

public class LoginDAO implements LoginIntegracao {
    
    @Override
    public Usuario logar(String usuario, String senha) throws DAOException {
        final StringBuilder sql = new StringBuilder();
        sql.append("SELECT * FROM usuario ");
        sql.append("WHERE login_usuario=? AND senha_usuario=?;");
        try {
            final Connection conexao = ConexaoUtil.criarNovaConexao();
            final PreparedStatement ps = conexao.prepareStatement(sql.toString());
            ps.setString(1, usuario);
            ps.setString(2, senha);
            final ResultSet rs = ps.executeQuery();
            Usuario usuarioConsulta = null;
            if (rs.next()) {
                usuarioConsulta = new Usuario();
                usuarioConsulta.setIdUsuario(rs.getInt("id_usuario"));
                usuarioConsulta.setLoginUsuario(rs.getString("login_usuario"));
                usuarioConsulta.setPermissaoUsuario(PermissaoUsuarioEnum.getEnum(rs.getInt("permissao_usuario")));
                return usuarioConsulta;
            } else {
                return usuarioConsulta;
            }
        } catch (final ConexaoException ex) {
            throw new DAOException(ex.getMessage());
        } catch (final SQLException sqlex) {
            throw new DAOException(sqlex.getMessage());
        }finally{
        	try {
				ConexaoUtil.fecharConexao();
			} catch (ConexaoException e) {
				SysDanceUtil.getInstancia().imprimirLog(e);
			}
        }
    }
}
